//
//  LinkList.hpp
//  DataStructure
//
//  Created by 劢克科技 on 2020/4/3.
//  Copyright © 2020 Shuleiming. All rights reserved.
//

#ifndef LinkList_hpp
#define LinkList_hpp

#include <stdio.h>
#include <stdlib.h>

typedef struct LNode {
    int data;
    struct LNode *next;
} LNode, *LinkList;

// 初始化单链表
bool InitList(LinkList &L);
// 判断是否为空表
bool isEmpty(LinkList L);
// 插入
bool ListInsert(LinkList &L, int i, int e);
// 在节点之后插入
bool InsertNextNode(LNode *p, int e);
// 在节点之前插入
bool InsertPriorNode(LNode *p, int e);
// 删除
bool ListDelete(LinkList &L, int i, int &e);
// 按位查找
LNode * GetElem(LinkList L, int i);
// 按值查找
LNode * LocateElem(LinkList L, int e);
// 求长度
int length(LinkList L);
// 尾插法
LinkList ListTailInsert(LinkList &L);
// 头插法
LinkList ListHeadInsert(LinkList &L);
// 单链表逆序
LinkList ListReverse(LinkList &L);
// 打印
void PrintList(LinkList L);
#endif /* LinkList_hpp */
